/**
 * 1.本代码为云笔记web端开发小组共同拥有。
 * 2.组内成员有 聂道鑫、徐斌强、何瑞、钟倩。
 * 3.联系方式：442342707@qq.com
 */
package com.yunbiji.controller;

import java.util.List;

import org.apache.log4j.Logger;

import com.jfinal.aop.Before;
import com.jfinal.core.Controller;
import com.yunbiji.interceptor.SessionInterceptor;
import com.yunbiji.model.Note_folders;
import com.yunbiji.model.Notes;

@Before(SessionInterceptor.class)
/**
 * 笔记创建类
 * @author 聂道鑫
 *
 */
public class NotesController extends Controller
{
	private static final Logger logger = Logger.getLogger(NotesController.class);
	
	/**
	 * 返回到主界面
	 */
	public void index()
	{
		render("welcome.html");
	}

	/**
	 * 从被点击的树节点里获取id和名字，根据当前的id去notes表中检索出该文件夹下笔记的名字
	 */
	public void getNotes()
	{
		String pId = getPara("ids");
		setSessionAttr("pId",pId);
		
		String tel = getSessionAttr("username");
		
		
		//根据pId，查找出对应的笔记本名称，因为前面四个是固定的文件夹，不管是谁都拥有所以，需要区分一下
		String pName;
		
		if(pId.equals("1")||pId.equals("2")||pId.equals("3")||pId.equals("4"))
		{
			pName=Note_folders.dao.queryStrName(pId);	
		}
		else
		{
			pName=Note_folders.dao.queryStrName(pId, tel);
		}
		
		setSessionAttr("pName",pName);
		
		
		// 确认详细结果分页
		Integer pageno = getParaToInt(0);;
		
		if (null == pageno || pageno < 1)
		{
			pageno = 1;
		}
		pId=getSessionAttr("pId");
		List<Notes> list = Notes.dao.getNotes(tel, pId, pageno);
		setSessionAttr("pageno",pageno);
		setAttr("pageno", pageno);
		setAttr("getNotes_Notes", list);
		render("welcome.html");
	}
	/**
	 * 点击下一页的时候，进行分页
	 */
	public void pageNote()
	{
		// 确认详细结果分页
		Integer pageno = getParaToInt(0);;
		String tel = getSessionAttr("username");
		if (null == pageno || pageno < 1)
			{
				pageno = 1;
			}
		String pId=getSessionAttr("pId");
		List<Notes> list = Notes.dao.getNotes(tel, pId, pageno);
		setSessionAttr("pageno",pageno);
		setAttr("pageno", pageno);
		setAttr("getNotes_Notes", list);
		render("welcome.html");
	}
	/**
	 * 这里是你点击笔记时产生的链接，会传送一个当前笔记的id
	 * @param id
	 * 这块是给何瑞的接口
	 */
	public void writeBlog()
	{
		int id=getParaToInt(0);
		setSessionAttr("id", id);
		String tel=getSessionAttr("username");
		String text=Notes.dao.queryStrContent(id, tel);
		setAttr("content",text);
		
		String noteName=Notes.dao.queryStrName(id, tel);
		setSessionAttr("noteName", noteName);
		setAttr("noteNameAboveEditor", noteName);
				
		// 确认详细结果分页
		int pId=Notes.dao.queryStrC_folder(id, tel);
		Integer pageno = getSessionAttr("pageno");
		List<Notes> list = Notes.dao.getNotes(tel, String.valueOf(pId), pageno);
		setAttr("pageno", pageno);
		setAttr("getNotes_Notes", list);
		render("welcome.html");
	}

	/**
	 * 新建笔记功能
	 */
	public void newNote()
	{
		try
		{
			String pId=getSessionAttr("pId");
			String noteName=getPara("noteName");
			String tel=getSessionAttr("username");
			
			Notes.dao.updateNotes(tel, noteName, pId);
			
			int id=Notes.dao.queryIntId(tel);
			setSessionAttr("id", id);
			// 确认详细结果分页
			Integer pageno = getSessionAttr("pageno");
			List<Notes> list = Notes.dao.getNotes(tel, pId, pageno);
			setAttr("pageno", pageno);
			setAttr("getNotes_Notes", list);
			render("welcome.html");
		}
		catch(NumberFormatException e)
		{
			logger.error("newNote方法出现异常");
			setAttr("alertInfo", "你没有选择笔记本，请先选中笔记本！");
			render("errors/alert.html");
			getResponse().setHeader("Refresh", "2;URL=index");
		}

	}
	/**
	 * 删除选中的笔记
	 */
	public void deleteNote()
	{
		try
		{
			String tel=getSessionAttr("username");
			int id=getSessionAttr("id");
			Notes.dao.deleteById(id);
			
			// 确认详细结果分页
			String pId=getSessionAttr("pId");
			Integer pageno = getSessionAttr("pageno");
			List<Notes> list = Notes.dao.getNotes(tel, pId, pageno);
			setAttr("pageno", pageno);
			setAttr("getNotes_Notes", list);
			render("welcome.html");
		}
		catch(NullPointerException e)
		{
			logger.error("deleteNote方法出现异常");
			setAttr("alertInfo", "你没有选择要删除的笔记，请先选中笔记！");
			render("errors/alert.html");
			getResponse().setHeader("Refresh", "2;URL=index");
		}

	}
	/**
	 * 重命名笔记
	 */
	public void renameNote()
	{
		try
		{
			String tel=getSessionAttr("username");
			int id=getSessionAttr("id");
			String noteName=getPara("noteNameAboveEditor");
			if(noteName.equals(" "))
			{
				setAttr("alertInfo", "笔记名字不能为空！");
				render("errors/alert.html");
				getResponse().setHeader("Refresh", "2;URL=index");
			}
			else
			{
				boolean flag=Notes.dao.renameNote(tel, id, noteName);
				if(flag)
				{
					// 确认详细结果分页
					String pId=getSessionAttr("pId");
					Integer pageno = getSessionAttr("pageno");
					List<Notes> list = Notes.dao.getNotes(tel, pId, pageno);
					setAttr("pageno", pageno);
					setAttr("getNotes_Notes", list);
					render("welcome.html");
				}
				else
				{
					setAttr("alertInfo", "笔记名字修改失败！");
					render("errors/alert.html");
					getResponse().setHeader("Refresh", "2;URL=index");
				}
			}
		}
		catch(NullPointerException e)
		{
			logger.error("renameNote方法出现异常");
			setAttr("alertInfo", "你还没选择笔记");
			render("errors/alert.html");
			getResponse().setHeader("Refresh", "2;URL=index");
		}
	
		
	}
}
